package com.copd.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;

@Data
@ApiModel(description = "患者信息更新请求")
public class PatientUpdateRequest {
    @ApiModelProperty(value = "患者ID", required = true)
    private Integer patientId;
    
    @ApiModelProperty(value = "基本信息")
    private BasicInfo basicInfo;

    @ApiModelProperty(value = "诊断记录")
    private List<DiagnosisRecord> diagnosisRecords;

    @ApiModelProperty(value = "检查项目")
    private List<ExaminationItem> examinationItems;

    @ApiModelProperty(value = "治疗项目")
    private List<TreatmentPlan> treatmentPlans;

    @ApiModelProperty(value = "出院建议")
    private List<DischargeAdvice> dischargeAdvices;
    
    @ApiModelProperty(value = "要删除的诊断记录ID列表")
    private List<Integer> deletedDiagnosisRecordIds;
    
    @ApiModelProperty(value = "要删除的检查项目ID列表")
    private List<Integer> deletedExaminationItemIds;
    
    @ApiModelProperty(value = "要删除的治疗项目ID列表")
    private List<Integer> deletedTreatmentPlanIds;
    
    @ApiModelProperty(value = "要删除的出院建议ID列表")
    private List<Integer> deletedDischargeAdviceIds;

    @Data
    public static class BasicInfo {
        @ApiModelProperty(value = "用户ID")
        private Integer userId;

        @ApiModelProperty(value = "姓名")
        private String name;

        @ApiModelProperty(value = "性别")
        private String gender;

        @ApiModelProperty(value = "年龄")
        private Integer age;

        @ApiModelProperty(value = "科室")
        private String department;

        @ApiModelProperty(value = "住院号")
        private String hospitalizationNumber;
    }

    @Data
    public static class DiagnosisRecord {
        @ApiModelProperty(value = "诊断记录ID")
        private Integer recordId;
        
        @ApiModelProperty(value = "诊断项目")
        private String diagnosisItem;

        @ApiModelProperty(value = "诊断内容")
        private String diagnosisContent;

        @ApiModelProperty(value = "备注")
        private String remarks;
    }

    @Data
    public static class ExaminationItem {
        @ApiModelProperty(value = "检查项目ID")
        private Integer examId;
        
        @ApiModelProperty(value = "检查类别")
        private String examCategory;

        @ApiModelProperty(value = "检查项目")
        private String examItem;

        @ApiModelProperty(value = "检查结果")
        private String examResult;

        @ApiModelProperty(value = "参考值")
        private String referenceValue;

        @ApiModelProperty(value = "备注")
        private String remarks;
    }

    @Data
    public static class TreatmentPlan {
        @ApiModelProperty(value = "治疗计划ID")
        private Integer planId;
        
        @ApiModelProperty(value = "计划类别")
        private String planCategory;

        @ApiModelProperty(value = "治疗项目")
        private String treatmentItem;

        @ApiModelProperty(value = "具体方案")
        private String specificPlan;

        @ApiModelProperty(value = "备注")
        private String remarks;
    }

    @Data
    public static class DischargeAdvice {
        @ApiModelProperty(value = "出院建议ID")
        private Integer dischargeId;
        
        @ApiModelProperty(value = "建议类别")
        private String adviceCategory;

        @ApiModelProperty(value = "出院项目")
        private String dischargeItem;

        @ApiModelProperty(value = "出院内容")
        private String dischargeContent;

        @ApiModelProperty(value = "备注")
        private String remarks;
    }
} 